package com.ppch.wuwamanus.model.vo.draw_card_analysis;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 抽象基础卡池VO类
 */
@Data
public abstract class BasePoolVO {
    /**
     * 1. 总抽卡数
     */
    protected int totalPulls = 0;

    /**
     * 2. 平均出金数（每次出金消耗的抽数之和/总出金数）
     */
    protected int avgGoldCount = 0;

    /**
     * 3. 总出金数
     */
    protected int totalGoldCount = 0;

    /**
     * 4.存储每次出金的信息（key:资源名称,value:消耗抽数）
     */
    protected List<Map<String, Object>> goldRecordsList = new ArrayList<>();

    /**
     * 5.已抽但未出金数（总抽卡数-每次出金消耗的抽数之和）
     */
    protected int notGoldCount = 0;
    
    // 公共setter方法
    public void setBaseParameters(int totalPulls, int avgGoldCount, 
                                  int totalGoldCount, int notGoldCount,
                                  List<Map<String, Object>> goldRecordsList) {
        this.totalPulls = totalPulls;
        this.avgGoldCount = avgGoldCount;
        this.totalGoldCount = totalGoldCount;
        this.notGoldCount = notGoldCount;
        this.goldRecordsList = goldRecordsList;
    }
    
    /**
     * 如果需要设置特有字段，可通过实现该方法进行定义
     */
    public abstract void setSpecificFields();

}